package top.lixunda.ecommerce.server.good.api.entity.db;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * VIEW
 * </p>
 *
 * @author Xumda
 * @since 2019-12-19
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("good_detail")
public class GoodDetailDO extends Model<GoodDetailDO> {

    private static final long serialVersionUID = 1L;

    /**
     * 待审核
     */
    public static final String GOOD_STATE_CHECK_PENDING = "待审核";

    /**
     * 审核中
     */
    public static final String GOOD_STATE_CHECKING = "审核中";

    /**
     * 审核失败
     */
    public static final String GOOD_STATE_FAILED = "审核失败";

    /**
     * 未上架
     */
    public static final String GOOD_STATE_NOT_ON = "未上架";

    /**
     * 正常
     */
    public static final String GOOD_STATE_NORMAL = "正常";

    /**
     * 待审核
     */
    public static final String SUB_GOOD_STATE_CHECK_PENDING = "待审核";

    /**
     * 审核中
     */
    public static final String SUB_GOOD_STATE_CHECKING = "审核中";

    /**
     * 审核失败
     */
    public static final String SUB_GOOD_STATE_FAILED = "审核失败";

    /**
     * 正常
     */
    public static final String SUB_GOOD_STATE_NORMAL = "正常";

    /**
     * 商品唯一标识Id
     */
    @TableId("good_id")
    private Integer goodId;

    /**
     * 商品分组id
     */
    @TableField("group_id")
    private Integer groupId;

    /**
     * 分组名称
     */
    @TableField("group_name")
    private String groupName;

    /**
     * 店铺id
     */
    @TableField("store_id")
    private Integer storeId;

    /**
     * 店铺名称
     */
    @TableField("store_name")
    private String storeName;

    /**
     * 创建人员id
     */
    @TableField("create_good_user_id")
    private Integer createGoodUserId;

    /**
     * 创建人员名称
     */
    @TableField("create_good_user_name")
    private String createGoodUserName;

    /**
     * 更新人员id
     */
    @TableField("update_good_user_id")
    private Integer updateGoodUserId;

    /**
     * 更新人员名称
     */
    @TableField("update_good_user_name")
    private String updateGoodUserName;

    /**
     * 删除人员id
     */
    @TableField("remove_good_user_id")
    private Integer removeGoodUserId;

    /**
     * 删除人员名称
     */
    @TableField("remove_good_user_name")
    private String removeGoodUserName;

    /**
     * 创建本记录的时间
     */
    @TableField("create_good_time")
    private LocalDateTime createGoodTime;

    /**
     * 更新本记录的时间
     */
    @TableField("update_good_time")
    private LocalDateTime updateGoodTime;

    /**
     * 删除本记录的时间
     */
    @TableField("remove_good_time")
    private LocalDateTime removeGoodTime;

    /**
     * 商品名称
     */
    @TableField("good_name")
    private String goodName;

    /**
     * 商品简要描述，一句话
     */
    @TableField("good_simple_desc")
    private String goodSimpleDesc;

    /**
     * 商品详细描述
     */
    @TableField("good_desc")
    private String goodDesc;

    /**
     * 分类id，系统分类
     */
    @TableField("good_category_id")
    private Integer goodCategoryId;

    /**
     * 分类id，系统分类
     */
    @TableField("good_category_name")
    private String goodCategoryName;

    /**
     * 分类最低价
     */
    @TableField("min_price")
    private BigDecimal minPrice;

    /**
     * 分类最高价
     */
    @TableField("max_price")
    private BigDecimal maxPrice;

    /**
     * 买点
     */
    @TableField("sell_point")
    private String sellPoint;

    /**
     * 热度得分
     */
    @TableField("good_score")
    private BigDecimal goodScore;

    /**
     * 热度得分上次更新时间，每天更新一次
     */
    @TableField("good_score_update_time")
    private LocalDateTime goodScoreUpdateTime;

    /**
     * 运费，为0时表示包邮
     */
    @TableField("freight")
    private BigDecimal freight;

    /**
     * 上架时间
     */
    @TableField("push_good_time")
    private LocalDateTime pushGoodTime;

    /**
     * 下架时间
     */
    @TableField("pull_good_time")
    private LocalDateTime pullGoodTime;

    /**
     * 商品状态：待审核，审核中，审核失败，未上架，售卖中（正常），缺货中...
     */
    @TableField("good_state")
    private String goodState;

    /**
     * 状态描述，可以是审核失败原因
     */
    @TableField("good_state_desc")
    private String goodStateDesc;

    /**
     * 审核人员
     */
    @TableField("check_good_user_id")
    private Integer checkGoodUserId;

    /**
     * 审核人员名称
     */
    @TableField("check_good_user_name")
    private String checkGoodUserName;

    /**
     * 审核时间
     */
    @TableField("check_good_time")
    private LocalDateTime checkGoodTime;

    /**
     * 商品是否删除
     */
    @TableField("good_useable")
    private Integer goodUseable;

    /**
     * 备注信息
     */
    @TableField("good_remark")
    private String goodRemark;

    /**
     * 商品图片Id，自动增长
     */
    @TableField("picture_id")
    private Integer pictureId;

    /**
     * 外键管理文件系统
     */
    @TableField("image_file_id")
    private Integer imageFileId;

    /**
     * 缩略图
     */
    @TableField("image")
    private String image;

    /**
     * 图片排序，小数在前，用于设置轮播图顺序，相同时排序不定
     */
    @TableField("picture_order")
    private Integer pictureOrder;

    /**
     * 商品分类是否删除
     */
    @TableField("picture_useable")
    private Integer pictureUseable;

    /**
     * 备注信息
     */
    @TableField("picture_remark")
    private String pictureRemark;

    /**
     * 唯一自动增长Id
     */
    @TableField("sub_good_id")
    private Integer subGoodId;

    /**
     * 分类名称
     */
    @TableField("sub_good_name")
    private String subGoodName;

    /**
     * 简单描述
     */
    @TableField("sub_desc")
    private String subDesc;

    /**
     * 图片
     */
    @TableField("sub_image")
    private String subImage;

    /**
     * 图片文件
     */
    @TableField("sub_image_file")
    private Integer subImageFile;

    /**
     * 分类商品数量
     */
    @TableField("sub_count")
    private Integer subCount;

    /**
     * 分类商品价格
     */
    @TableField("sub_price")
    private BigDecimal subPrice;

    /**
     * 分类商品原价
     */
    @TableField("sub_old_price")
    private BigDecimal subOldPrice;

    /**
     * 更新价格时间
     */
    @TableField("sub_update_price_time")
    private LocalDateTime subUpdatePriceTime;

    /**
     * 创建分类时间
     */
    @TableField("sub_create_time")
    private LocalDateTime subCreateTime;

    /**
     * 更新分类时间
     */
    @TableField("sub_update_time")
    private LocalDateTime subUpdateTime;

    /**
     * 删除分类时间
     */
    @TableField("sub_remove_time")
    private LocalDateTime subRemoveTime;

    /**
     * 创建人员id
     */
    @TableField("sub_create_user_id")
    private Integer subCreateUserId;

    /**
     * 创建人员名称
     */
    @TableField("sub_create_user_name")
    private String subCreateUserName;

    /**
     * 更新人员id
     */
    @TableField("sub_update_user_id")
    private Integer subUpdateUserId;

    /**
     * 更新人员名称
     */
    @TableField("sub_update_user_name")
    private String subUpdateUserName;

    /**
     * 删除人员id
     */
    @TableField("sub_remove_user_id")
    private Integer subRemoveUserId;

    /**
     * 删除人员名称
     */
    @TableField("sub_remove_user_name")
    private String subRemoveUserName;

    /**
     * 商品状态：待审核，审核中，审核失败，审核通过
     */
    @TableField("sub_state")
    private String subState;

    /**
     * 状态描述，可以是审核失败原因
     */
    @TableField("sub_state_desc")
    private String subStateDesc;

    /**
     * 审核人员
     */
    @TableField("sub_check_user_id")
    private Integer subCheckUserId;

    /**
     * 审核人员名称
     */
    @TableField("sub_check_user_name")
    private String subCheckUserName;

    /**
     * 审核时间
     */
    @TableField("sub_check_time")
    private LocalDateTime subCheckTime;

    /**
     * 商品分类是否删除 1 可用 0 不可用，已删除
     */
    @TableField("sub_useable")
    private String subUseable;

    /**
     * 备注信息
     */
    @TableField("sub_remark")
    private String subRemark;


    @Override
    protected Serializable pkVal() {
        return this.goodId;
    }

}
